package cn.daomeng.firebird.core.common.annotation;

import cn.daomeng.firebird.core.utils.CollectionUtils;
import cn.daomeng.firebird.core.utils.StringUtils;
import cn.hutool.json.JSONUtil;

import javax.validation.ConstraintValidator;
import javax.validation.ConstraintValidatorContext;
import java.util.List;

/**
 * @Description: 公共常量类
 * @author gaoqing.li
 * @date 2019/4/11
 **/
public class IsJsonarrayValiadator implements ConstraintValidator<IsJsonarray, String> {

    /**注意的是:ConstraintValidator<IsMobile, String>
     * 第一个参数就是自定义注解的名字 第二个就是注解修饰的字段类型
     */

    //申明一个required 默认的值为false
    public boolean required = false;

    //申明一个required 默认的值为false
    public boolean notEmpty = false;

    @Override
    public void initialize(IsJsonarray constraintAnnotation) {

        //初始化:拿到IsMobile中的required中的值
        required = constraintAnnotation.requried();
        notEmpty = constraintAnnotation.notEmpty();

    }
    @Override
    public boolean isValid(String value, ConstraintValidatorContext context) {
        // 非必填时，那么参数为空的时候直接返回true
        if(!required && StringUtils.isBlank(value)){
            return true;
        }
        // 不是jsonArray直接返回false
        boolean jsonArray = JSONUtil.isJsonArray(value);
        if(!jsonArray){
            return false;
        }
        // 如果数据为空，并且允许为空时返回true
        if(notEmpty){
        	 // 必填时，并且集合不为空返回ture
            List<String> userIdList = JSONUtil.toList(JSONUtil.parseArray(value), String.class);
            boolean isEmpty = CollectionUtils.isEmpty(userIdList);
            if(isEmpty){
                return false;
            }else {
                return true;
            }
        }else {
            return true;
        }
    }

}
